package cn.tedu.collection2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**本类用于测试List接口*/
public class TestList {
    public static void main(String[] args) {
        //1.创建List的多态对象，注意List是接口，不可实例化
        List<String> list = new ArrayList<>();

        //2.测试继承自Collection中的方法
        list.add("大力娃");
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("喷水娃");
        list.add("喷火娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);

//        list.clear();//清空集合
//        System.out.println(list);

        System.out.println(list.contains("喷火娃"));
        System.out.println(list.equals("喷水娃"));
        System.out.println(list.isEmpty());
        System.out.println(list.remove("隐身娃"));
        System.out.println(list.size());//获取集合中元素的个数
        System.out.println(Arrays.toString(list.toArray()));//将集合转为数组

        //3.可以List接口自己的方法
        /**List集合是有序的，所以可以根据索引index来操作集合中的元素
         * 可以存放重复的数据*/
        list.add("小蝴蝶");
        System.out.println(list);
        list.add(1,"蛇精");
        System.out.println(list);
        list.add(3,"小蝴蝶");
        System.out.println(list);

        System.out.println(list.indexOf("小蝴蝶"));//获取元素第1次出现的下标
        System.out.println(list.lastIndexOf("小蝴蝶"));//获取元素最后1次出现的下标
        list.remove(5);//根据索引index删除元素
        System.out.println(list);

        System.out.println(list.get(3));//根据下标获取元素
        list.set(7,"蝎子精");
        System.out.println(list);

        //4.测试集合间的操作
        List<String> list2 = new ArrayList<>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        System.out.println(list2);

        //将集合2中的所有元素添加到集合1中
        list.addAll(list2);//默认将2集合的元素追加到1末尾处
        System.out.println(list);
        list.addAll(1,list2);//指定下标，将2集合的所有元素添加到1集合中
        System.out.println(list);

        //作业
        //1.使用3中不同的方式遍历集合2
        //for
        //高效for循环 foreach
        //iterator


    }
}
